package com.cloudcc.mobile.entity.schedule;

import java.util.Date;

import android.text.TextUtils;

import com.cloudcc.cloudframe.util.DateUtils;
import com.cloudcc.mobile.AppConstant;

/**
 * @Description: 日程
 * @author wangzhiqiang
 * @date 2015-11-24 上午11:26:32
 * 
 */
public class ScheduleEntity implements Comparable<ScheduleEntity> {

	public String expiredate;// 截至日期
	public String begintime;// 开始时间
	public String endtime;// 结束时间
	public String remark;// 备注

	public String id;//
	public String iscompleted; // 是否完成
	public String istask;// 是否是日程 1是任务 2 是日程
	public String priority;// 优先级
	public String rn;//
	public String status;// 状态
	public String subject;// 状态

	private Date mExpiredate;
	private Date mBegintime;
	private Date mEndtime;

	/**
	 * 获得 截至日期
	 * 
	 * @return
	 */
	public Date getExpiredateForDate() {
		if (mExpiredate == null) {
			mExpiredate = DateUtils.stringToDate(expiredate,
					AppConstant.DATEPATTERN_SERVER);
		}
		return mExpiredate;
	}

	/**
	 * 获得开始时间
	 * 
	 * @return
	 */
	public Date getBegintimeForDate() {
		if (mBegintime == null) {
			mBegintime = DateUtils.stringToDate(begintime,
					AppConstant.DATEPATTERN_SERVER);
		}
		return mBegintime;
	}

	/**
	 * 获得结束时间
	 * 
	 * @return
	 */
	public Date getEndtimeForDate() {
		if (mEndtime == null) {
			mEndtime = DateUtils.stringToDate(endtime,
					AppConstant.DATEPATTERN_SERVER);
		}
		return mEndtime;
	}

	/**
	 * 是否是任务
	 * 
	 * @return
	 */
	public boolean isTask() {
		return TextUtils.equals("1", istask);
	}

	@Override
	public int compareTo(ScheduleEntity another) {
		//我们要求 list的 sort 为 从 小到 大 task最大
		// 任务跟任务
		// 日程跟日程
		// 任务跟日程

		if (isTask() && !another.isTask()) {// 任务 日程  任务大
			return 1;
		}
		if (!isTask() && another.isTask()) {// 日程 任务   任务大
			return -1;
		}
		if (another.isTask() && isTask()) {// 任务跟任务 时间后的大
			return getExpiredateForDate().getTime() > another
					.getExpiredateForDate().getTime() ? 1 : -1;
		}
		if (!another.isTask() && !isTask()) {// 日程跟日程 开始时间后 的大
			return getBegintimeForDate().getTime() > another
					.getBegintimeForDate().getTime() ? 1 : -1;
		}
		return 0;
	}
	@Override
	public boolean equals(Object o) {
		
		if (o instanceof ScheduleEntity) {
			return false;
		}
		ScheduleEntity oo=(ScheduleEntity)o;
		if (TextUtils.isEmpty(oo.id)||TextUtils.isEmpty(id)) {
			return false;
		}
		return oo.id.equals(id);
	}

}
